Multi-stage receiver for wireless communication

ABSTRACT

Techniques for receiving a MIMO transmission are described. A receiver processes received data from multiple receive antennas in multiple stages. A first stage performs front-end filtering/equalization on the received data with a front-end filter to process non on-time signal components in the multiple received signals. A second stage processes the filtered data with one or more combiner matrices to combine on-time signal components for multiple transmitted signals. For a MIMO-CDM transmission, a single front-end filter may be used for all channelization codes, and a different combiner matrix may be used for each channelization code. Partitioning the receiver processing into multiple stages simplifies derivation of the front-end filter and combiner matrices while achieving good performance. The front-end filter and combiner matrices may be updated separately at the same or different rates.

CLAIM OF PRIORITY UNDER 35 U.S.C. §119

The present Application for Patent claims priority to Provisional Application Ser. No. 60/741,159, entitled “Bipartite Receiver Structure for MIMO CDMA Downlinks,” filed Nov. 30, 2005, assigned to the assignee hereof, and expressly incorporated herein by reference.

BACKGROUND

1. Field

The present disclosure relates generally to communication, and more specifically to techniques for receiving a multiple-input multiple-output (MIMO) transmission.

2. Background

A MIMO transmission is a transmission from multiple (M) transmit antennas to multiple (N) receive antennas. For example, a transmitter may simultaneously transmit M data streams from the M transmit antennas. These data streams are distorted by the wireless environment and further degraded by noise and interference. A receiver receives the transmitted data streams via the N receive antennas. The received signal from each receive antenna contains scaled and delayed versions of the transmitted data streams. The transmitted data streams are thus dispersed among the N received signals from the N receive antennas. The receiver may then process the N received signals with a space-time equalizer to recover the transmitted data streams.

The receiver may dynamically derive coefficients for the space-time equalizer to account for variations in signal properties. These signal properties may relate to channel and interference statistics, spatio-temporal processing of the transmitted data streams, etc. The derivation of the equalizer coefficients is computationally intensive. Updating these equalizer coefficients to match the fastest changes in the signal properties may result in a very complex receiver. Updating these equalizer coefficients at a slower rate may result in performance degradation.

There is therefore a need in the art for techniques to efficiently receive a MIMO transmission.

SUMMARY

Techniques for efficiently receiving a MIMO transmission are described herein. A receiver receives multiple signals transmitted by a transmitter and processes multiple received signals to obtain received data. The receiver may process the received data in multiple stages. A first stage may perform filtering/equalization on the received data with a front-end filter to process (e.g., compensate for, suppress, or mitigate) non on-time signal components. A second stage may process filtered data from the first stage with one or more combiner matrices to combine on-time signal components. The on-time and non on-time signal components may be distinguished based on the transmit time. At the receiver, the on-time signal components may comprise signal components tracing back to a desired symbol to be recovered as well as other symbols transmitted at the same time as the desired symbol. The non on-time signal components may comprise signal components that are not on-time signal components, such as signal components tracing back to other symbols transmitted before and after the desired symbol.

The front-end filter is not dependent on data-specific processing at the transmitter whereas the combiner matrices may be functions of data-specific processing at the transmitter. The data-specific processing may correspond to, e.g., channelization codes, transmit matrices, gains, etc., used to send data. For example, in a MIMO transmission that utilizes code division multiplexing (CDM), a single front-end filter may be derived and used for all channelization codes, and a different combiner matrix may be derived for each channelization code. Partitioning the receiver processing into multiple stages simplifies the derivation of the front-end filter and the combiner matrices while achieving good performance. The front-end filter and combiner matrices may be updated separately at the same or different rates.

According to an aspect, an apparatus is described which includes at least one processor and a memory. The processor(s) filter received data to process non on-time signal components in multiple received signals and obtain filtered data. The processor(s) also process the filtered data to combine on-time signal components for multiple transmitted signals.

According to another aspect, an apparatus is described which includes at least one processor and a memory. The processor(s) derive a front-end filter for processing non on-time signal components in multiple received signals and also derive multiple combiner matrices for combining on-time signal components for multiple transmitted signals sent with multiple channelization codes. The processor(s) filter received samples with the front-end filter and obtain filtered symbols for the multiple channelization codes. The processor(s) further process the filtered symbols for each channelization code with a combiner matrix for the channelization code to obtain output symbols for the channelization code.

Various aspects and features of the disclosure are described in further detail below.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a block diagram of a transmitter and a receiver.

FIG. 2 illustrates a MIMO-CDM transmission.

FIG. 3 shows a block diagram of a CDMA modulator.

FIG. 4 shows a design of various blocks within the receiver.

FIG. 5 shows a process for recovering a MIMO transmission at the receiver.

DETAILED DESCRIPTION

The receiver processing techniques described herein may be used for various communication systems such as Code Division Multiple Access (CDMA) systems, Time Division Multiple Access (TDMA) systems, Frequency Division Multiple Access (FDMA) systems, Orthogonal FDMA (OFDMA) systems, Single-Carrier FDMA (SC-FDMA) systems, etc. A CDMA system utilizes code division multiplexing (CDM) and transmits modulation symbols in parallel using different channelization codes. A CDMA system may utilize a radio technology such as Wideband-CDMA (W-CDMA), cdma2000, etc. cdma2000 covers IS-2000, IS-856, and IS-95 standards. A TDMA system may utilize a radio technology such as Global System for Mobile Communications (GSM). W-CDMA and GSM are described in documents from an organization named “3rd Generation Partnership Project” (3GPP). cdma2000 is described in documents from an organization named “3rd Generation Partnership Project 2” (3GPP2). 3GPP and 3GPP2 documents are publicly available. An OFDMA system utilizes orthogonal frequency division multiplexing (OFDM) and transmits modulation symbols in the frequency domain on orthogonal subcarriers. An SC-FDMA system utilizes single-carrier frequency division multiplexing (SC-FDM) and transmits modulation symbols in the time domain on orthogonal subcarriers.

The techniques described herein may also be used for MIMO transmissions on the downlink as well as the uplink. The downlink (or forward link) refers to the communication link from base stations to wireless devices, and the uplink (or reverse link) refers to the communication link from the wireless devices to the base stations. For clarity, the techniques are described below for a MIMO transmission in a CDMA system, which may utilize W-CDMA, cdma2000, or some other CDMA radio technology.

FIG. 1 shows a block diagram of a transmitter 110 and a receiver 150 for a MIMO transmission. For downlink transmission, transmitter 110 is part of a base station, and receiver 150 is part of a wireless device. For uplink transmission, transmitter 110 is part of a wireless device, and receiver 150 is part of a base station. A base station is typically a fixed station that communicates with the wireless devices and may also be called a Node B, an access point, etc. A wireless device may be stationary or mobile and may also be called a user equipment (UE), a mobile station, a terminal, a station, a subscriber unit, etc. A wireless device may be a cellular phone, a personal digital assistant (PDA), a wireless modem, a laptop computer, a handheld device, etc.

At transmitter 110, a transmit data processor (TX Data Proc) 112 receives traffic data and signaling, processes (e.g., encodes, interleaves, and symbol maps) the received data, and provides data symbols. Processor 112 also generates and multiplexes pilot symbols with the data symbols. As used herein, a data symbol is a symbol for traffic data or signaling, a pilot symbol is a symbol for pilot, and a symbol is typically a complex value. The data symbols and pilot symbols may be modulation symbols from a modulation scheme such as PSK or QAM. Pilot is data that is known a priori by both the transmitter and receiver. A TX MIMO processor 114 performs spatial or spatio-temporal processing on the data and pilot symbols as described below and provides output symbols to multiple (M) CDMA modulators 116 a through 116 m. Each CDMA modulator 116 processes its output symbols as described below and provides output chips to an associated transmitter unit (TMTR) 118. Each transmitter unit 118 processes (e.g., converts to analog, amplifies, filters, and frequency upconverts) its output chips and generates a modulated signal. M modulated signals from M transmitter units 118 a through 118 m are transmitted from M antennas 120 a through 120 m, respectively.

At receiver 150, multiple (N) antennas 152 a through 152 n receive the transmitted signals via various propagation paths in the wireless environment and provide N received signals to N receiver units (RCVR) 154 a through 154 n, respectively. Each receiver unit 154 processes (e.g., filters, amplifies, frequency downconverts, and digitizes) its received signal and provides received samples to a channel processor 156 and an equalizer/CDMA demodulator 160. Processor 156 derives coefficients for a front-end filter/equalizer and coefficients for one or more combiner matrices as described below. Unit 160 performs equalization with the front-end filter and CDMA demodulation and provides filtered symbols. A receive (RX) MIMO processor 170 combines the filtered symbols across spatial dimension and provides detected symbols, which are estimates of the transmitted data symbols. An RX data processor 172 processes (e.g., symbol demaps, deinterleaves, and decodes) the detected symbols and provides decoded data. In general, the processing by equalizer/CDMA demodulator 160, RX MIMO processor 170, and RX data processor 172 is complementary to the processing by CDMA modulator 116, TX MIMO processor 114, and TX data processor 112, respectively, at transmitter 110.

Controllers/processors 130 and 180 direct operation of various processing units at transmitter 110 and receiver 150, respectively. Memories 132 and 182 store data and program codes for transmitter 110 and receiver 150, respectively.

FIG. 2 illustrates a MIMO-CDM transmission. For CDM, up to C symbols may be sent simultaneously via one transmit antenna with C channelization codes, where in general C≧1. These channelization codes may be orthogonal variable spreading factor (OVSF) codes in W-CDMA, Walsh codes in cdma2000, other orthogonal codes or quasi-orthogonal codes, pseudo-random codes, etc. Each channelization code is a specific sequence of chips. The number of chips in the sequence is the length or spreading factor of the channelization code. In general, any set of one or more channelization codes may be used for each transmit antenna, and the channelization codes may have the same or different spreading factors. For simplicity, the following description assumes that the channelization codes have the same spreading factor. The same set of C channelization codes may be reused for each of the M transmit antennas. For MIMO, up to M symbols may be sent simultaneously via M transmit antennas. For MIMO-CDM, up to C·M symbols may be sent simultaneously via M transmit antennas with C channelization codes. MIMO processing may be performed separately for each of the C channelization codes. MIMO processing is performed across all M transmit antennas for each channelization code. CDM processing may be performed separately for each of the M transmit antennas. CDM processing is performed for all C channelization codes for each transmit antenna.

FIG. 3 shows a block diagram of a CDMA modulator 116 for one transmit antenna m, where m ε ={1, . . . M}. CDMA modulator 116 may be used for each of CDMA modulators 116 a through 116 m in FIG. 1. CDMA modulator 116 includes a data processor 310 for each channelization code used for traffic data and/or signaling and a pilot processor 320 for pilot.

Within data processor 310, a spreader 312 spreads output symbols d_(m,c)(s) for data with channelization code c having a chip sequence of ν_(c)(k), where s is symbol index and k is chip index. A multiplier 314 scales the output of spreader 312 with a gain g_(m,c) and provides data chips for channelization code c. Within pilot processor 320, a spreader 322 spreads output symbols d_(m,p)(s) for pilot with channelization code p for pilot. A multiplier 324 scales the output of spreader 322 with a gain g_(m,p) and provides pilot chips. The gains g_(m,c) and g_(m,p) determine the amount of transmit power used for channelization code c and pilot, respectively. A summer 330 sums the data and pilot chips for all channelization codes. A scrambler 332 multiplies the output of summer 330 with a scrambling sequence p(k) for transmitter 110 and provides output chips y_(m)(k) for transmit antenna m.

In general, any number and any ones of the C channelization codes may be used for each of the M transmit antennas. In one design, the same channelization code is used for pilot for all M transmit antennas. In another design, M channelization codes are used for pilot for the M transmit antennas, and the remaining C-M channelization codes may be reused for each of the M transmit antennas. The same scrambling sequence may be used for all M transmit antennas, as shown in FIG. 3. Alternatively, a different scrambling sequence may be used for each transmit antenna. The spreading and scrambling may also be performed in other manners.

A MIMO channel is formed by the propagation environment between the M transmit antennas at transmitter 110 and the N receive antennas at receiver 150. L data symbols may be sent in parallel from the M transmit antennas for each channelization code, where 1≦L≦min {M, N}. Receiver 150 may analyze the performance (e.g., throughput) of the MIMO channel for different values of L (and possibly different transmit matrices/vectors) and may select the L value (and transmit matrix/vector) that achieves the best performance.

Transmitter 110 may perform transmitter spatial processing for each channelization code c in each symbol period s, as follows: d _(c)(s)=B _(c) b _(c)(s), for c=1, . . . , C,   Eq (1) where b _(c)(s)=[b_(1,c)(s) b_(2,c)(s) . . . b_(L,c)(s)]^(T) is an L×1 vector of data symbols,

B_(c) is an L×M transmit matrix for channelization code c,

d _(c)(s)=[d_(1,c)(s) d_(2,c)(s) . . . d_(M,c)(s)]^(T) is an M×1 vector of output symbols, and

“^(T)” denotes a transpose.

Each element of b _(c)(s) may correspond to a different data stream. The data streams may have different gains, in which case matrix B_(c) may have different column norms for different data streams. Equation (1) shows spatial encoding with B_(c). Spatio-temporal encoding such as, e.g., space-time transmit diversity (STTD) may also be performed but is not shown in equation (1).

Different transmit matrices may be used for different MIMO modes such as closed loop transmit diversity (CLTD), per antenna rate control (PARC), code reuse Bell Labs layered space-time (CRBLAST), double-transmit adaptive array (D-TXAA), etc. Table 1 lists some MIMO modes and, for each mode, gives L, M, B_(c) and the source of the data symbols. In Table 1, B_(cltd) may be a 2×1 vector selected from the set {[1 e^(jπ/4)]^(T), [1 e^(−j3π/4)]^(T), [1 e^(j3π/4)]^(T), [1 e^(−jπ/4)]^(T)}. B_(d−txaa) may be a 2×2 matrix selected from the set $\left\{ {\begin{bmatrix} 1 & 1 \\ {\mathbb{e}}^{{j\pi}/4} & {\mathbb{e}}^{{- {j3\pi}}/4} \end{bmatrix},\begin{bmatrix} 1 & 1 \\ {\mathbb{e}}^{{j3\pi}/4} & {\mathbb{e}}^{{- {j\pi}}/4} \end{bmatrix}} \right\}.$

I is an identity matrix with ones along the diagonal and zeros elsewhere. TABLE 1 Source of MIMO Mode L M B_(c) Data Symbols CLTD 1 2 B_(c) = B_(cltd) From a single encoded frame. PARC L = M ≧2 B_(c) = I From L different encoded frames. CRBLAST L = M ≧2 B_(c) = I From a single encoded frame. D-TXAA L = M =2 B_(c) = B_(d-txaa) From up to L encoded frames.

Transmitter 110 may perform CDMA processing for each transmit antenna m in each symbol period s, as follows: $\begin{matrix} {{{y_{m}(k)} = {\left( {\sum\limits_{c = 1}^{C}{g_{m,c} \cdot {v_{c}\left( {k\quad{mod}\quad C} \right)} \cdot {d_{m,c}\left( {k\quad{div}\quad C} \right)}}} \right) \cdot {p(k)}}},{{{for}\quad m} = 1},{\ldots\quad.M},} & {{Eq}\quad(2)} \end{matrix}$ where symbol period s corresponding to chip period k is given by s=k div C=└k/C┘. The gain g_(m,c) may be set equal to zero for each channelization code that is not used.

If channelization codes with different spreading factors are used, then the CDMA processing for transmit antenna m may be expressed as: ${{y_{m}(k)} = {\left( {\sum\limits_{c = 1}^{N_{pc}}{g_{m,c} \cdot {v_{c}\left( {k\quad{mod}\quad C_{c}} \right)} \cdot {d_{m,c}\left( {k\quad{div}\quad C_{c}} \right)}}} \right) \cdot {p(k)}}},$ where C_(c) is the spreading factor of channelization code c, and

N_(pc) is the number of channelization codes used for transmit antenna m.

For simplicity, the following description assumes that channelization codes with spreading factor of C is used for each transmit antenna. In equation (2), output symbol d_(m,c)(s) is spread with channelization code c with spreading factor C and scaled by gain g_(m,c) to obtain data chips. The spreading is achieved by replicating output symbol d_(m,c)(s) a number of C times and multiplying the C output symbol copies with the C^((c)) chips ν_(c)(k) of channelization code c. The data and pilot chips for all C channelization codes are summed and further scrambled with scrambling sequence p(k) to obtain output chips y_(m)(k) for transmit antenna m. The same CDMA processing is performed for each of the M transmit antennas.

The received samples at receiver 150 in each chip period k may be expressed as: x(k)=Hy(k)+n(k),   Eq (3) where y(k) is a T×1 vector of output chips, where T is described below,

H is an R×T channel response matrix, where R is described below,

x(k) is an R×1 vector of received samples, and

n(k) is an R×1 noise vector.

Receiver 150 may digitize the received signal from each receive antenna at K times the chip rate, where K is an oversampling ratio and in general K≧1. In each chip period k, receiver 150 may obtain E·K samples from each receiver 154 and form x(k) by stacking N·E·K samples from N receivers 154 a through 154 n. E is the length of the front-end equalizer at receiver 150, in number of chips. In general, E≧1 and may be selected based on a tradeoff between receiver complexity and performance. x(k) includes R received samples from N receive antennas for E chip periods, where R=N·E·K.

Matrix H contains time-domain channel impulse responses for all transmit and receive antenna pairs. As shown in FIG. 1, there is a propagation channel between each transmit antenna and each receive antenna, or a total of M·N propagation channels between the M transmit antennas and N receive antennas. Each propagation channel has a particular impulse response determined by the wireless environment. The response of a single-input multiple-output (SIMO) channel between each transmit antenna m and the N receive antennas may be given by an R×T_(m) submatrix H_(m). The number of rows in H_(m) is determined by the number of entries in x(k). The number of columns in H_(m) is determined by the equalizer length E as well as the time span of the impulse responses between transmit antenna m and the N receive antennas. T_(m) may be given as follows: $\begin{matrix} {{T_{m} = \left\lceil {E + {\max\limits_{n}\left\{ \ell_{m,n} \right\}}} \right\rceil},} & {{Eq}\quad(4)} \end{matrix}$ where l_(m,n) is the time span of the impulse response between transmit antenna m and receive antenna n, in number of chips.

Matrix H is composed of M submatrices H_(m), for m=1, . . . M, as follows: H=[H ₁H₂ . . . H_(M)].   Eq (5) H has a dimension of R×T, where T=T₁+T₂+ . . . +T_(M).

Vector y(k) is composed of M subvectors y _(m)(k), for m=1, . . . , M, for the M transmit antennas. Each subvector y _(m)(k) includes T_(m) output chips from one transmit antenna m centered at chip period k. Vector y(k) and subvector y _(m)(k) may be expressed as: $\begin{matrix} {{{\underset{\_}{y}(k)} = \begin{bmatrix} {{\underset{\_}{y}}_{1}(k)} \\ {{\underset{\_}{y}}_{2}(k)} \\ \vdots \\ {{\underset{\_}{y}}_{M}(k)} \end{bmatrix}}\quad{and}\quad\quad{{{\underset{\_}{y}}_{m}(k)} = {\begin{bmatrix} {y_{m}\left( {k - \left\lfloor {{T_{m}/2} - 1} \right\rfloor} \right)} \\ \vdots \\ {y_{m}(k)} \\ \vdots \\ {y_{m}\left( {k + \left\lceil {{T_{m}/2} - 1} \right\rceil} \right)} \end{bmatrix}.}}} & {{Eq}\quad(6)} \end{matrix}$

Equation (3) may also be expressed as: $\begin{matrix} {{\underset{\_}{x}(k)} = {{\sum\limits_{m = 1}^{M}{{\underset{\_}{H}}_{m}{{\underset{\_}{y}}_{m}(k)}}} + {{\underset{\_}{n}(k)}.}}} & {{Eq}\quad(7)} \end{matrix}$

For the model shown in equation (7), in each chip period k, T_(m) output chips are sent from each transmit antenna m and via a SIMO channel with a response of H_(m) to the N receive antennas. The received samples in x(k) include contributions from all M transmit antennas. x(k), y(k), and H may be relatively large. As an example, with M=2, N=2, K=2, E=20, T=48, and R=80, y(k) would be a 48×1 vector, H would be an 80×48 matrix, and x(k) would be an 80×1 vector.

The noise may be assumed to be stationary complex random vector with E {n(k)}=0, and   Eq (8) E {n(k)n ^(H)(k)}=R _(nn), Eq (9) where E { } is an expectation operation, 0 is a vector of all zeros, R_(nn) is an R×R noise covariance matrix, and “^(H)” denotes a conjugate transpose. Equations (8) and (9) indicate that the noise has zero mean and a covariance matrix of R_(nn).

Receiver 150 may recover the data symbols in b _(c)(s) for each channelization code c by filtering the received samples in x(k) with a bank of L filters for channelization code c and then despreading and descrambling the filtered samples, as follows: $\begin{matrix} {\begin{matrix} {{{\hat{\underset{\_}{b}}}_{c}(s)} = {\frac{1}{\sqrt{C}} \cdot {\sum\limits_{k = {sC}}^{{{({s + 1})}C} - 1}{{\underset{\_}{W}}_{c}^{H}{{\underset{\_}{x}(k)} \cdot \left\lbrack {{y_{c}\left( {k\quad{mod}\quad C} \right)} \cdot {p(k)}} \right\rbrack^{*}}}}}} \\ {= {{\underset{\_}{W}}_{c}^{H}\left( {\frac{1}{\sqrt{C}} \cdot {\sum\limits_{k = {sC}}^{{{({s + 1})}C} - 1}{\left\lbrack {{\underset{\_}{H}{\underset{\_}{y}(k)}} + {\underset{\_}{n}(k)}} \right\rbrack \cdot \left\lbrack {{v_{c}\left( {k\quad{mod}\quad C} \right)} \cdot {p(k)}} \right\rbrack^{*}}}} \right)}} \\ {= {{\underset{\_}{W}}_{c}^{H}\left\lbrack {{\underset{\_}{H}{{\underset{\_}{\Theta}}_{c}(s)}} + {{\underset{\_}{n}}_{c}(s)}} \right\rbrack}} \\ {= {{\underset{\_}{W}}_{c}^{H}{{\underset{\_}{\chi}}_{c}(s)}}} \end{matrix}{where}} & {{Eq}\quad(10)} \\ {{{{\underset{\_}{\Theta}}_{c}(s)} = \left( {\frac{1}{\sqrt{C}} \cdot {\sum\limits_{k = {sC}}^{{{({s + 1})}C} - 1}{{\underset{\_}{y}(k)} \cdot \left\lbrack {{v_{c}\left( {k\quad{mod}\quad C} \right)} \cdot {p(k)}} \right\rbrack^{*}}}} \right)},} & {{Eq}\quad(11)} \\ {{{{\underset{\_}{n}}_{c}(s)} = \left( {\frac{1}{\sqrt{C}} \cdot {\sum\limits_{k = {sC}}^{{{({s + 1})}C} - 1}{{\underset{\_}{n}(k)} \cdot \left\lbrack {{v_{c}\left( {k\quad{mod}\quad C} \right)} \cdot {p(k)}} \right\rbrack^{*}}}} \right)},} & {{Eq}\quad(12)} \\ \begin{matrix} {{{\underset{\_}{\chi}}_{c}(s)} = \left( {\frac{1}{\sqrt{C}} \cdot {\sum\limits_{k = {sC}}^{{{({s + 1})}C} - 1}{{\underset{\_}{x}(k)} \cdot \left\lbrack {{v_{c}\left( {k\quad{mod}\quad C} \right)} \cdot {p(k)}} \right\rbrack^{*}}}} \right)} \\ {{= {{\underset{\_}{H}{{\underset{\_}{\Theta}}_{c}(s)}} + {{\underset{\_}{n}}_{c}(s)}}},} \end{matrix} & {{Eq}\quad(13)} \end{matrix}$

W_(c) is an L×R overall filter for channelization code c,

{circumflex over (b)} _(c)(s) is an estimate of b _(c)(s), and

“*” denotes a complex conjugate.

Θ_(c)(s) is a T×1 vector of despread symbols for channelization code c and is obtained based on the transmitted chips. n_(c)(s) is an R×1 noise vector for channelization code c after descrambling and despreading. n_(c)(s) conserves the statistics of n(k), which are independent of channelization code c. χ_(c)(s) is an R×1 vector of despread symbols for channelization code c and is obtained based on the received samples. W_(c) includes the bank of L filters for channelization code c. Equation (10) indicates that the processing with W_(c) may equivalently be performed on the symbols in χ_(c)(s) instead of the received samples in x(k).

Filter W_(c) may be a Weiner filter, which may be derived as: $\begin{matrix} {\begin{matrix} {{\underset{\_}{W}}_{c} = {E{\left\{ {{{\underset{\_}{\chi}}_{c}(s)}{{\underset{\_}{\chi}}_{c}^{H}(s)}} \right\}^{- 1} \cdot E}\left\{ {{{\underset{\_}{\chi}}_{c}(s)}{{\underset{\_}{b}}_{c}^{H}(s)}} \right\}}} \\ {= {\left\lbrack {{\underset{\_}{H}E\left\{ {{{\underset{\_}{\Theta}}_{c}(s)}{{\underset{\_}{\Theta}}_{c}^{H}(s)}} \right\}{\underset{\_}{H}}^{H}} + {\underset{\_}{R}}_{nn}} \right\rbrack^{- 1} \cdot \left\lbrack {\underset{\_}{H}E\left\{ {{{\underset{\_}{\Theta}}_{c}(s)}{{\underset{\_}{b}}_{c}^{H}(s)}} \right\}} \right\rbrack}} \\ {= {\left\lbrack {{\underset{\_}{H}{\underset{\_}{\Gamma}}_{c}{\underset{\_}{H}}^{H}} + {\underset{\_}{R}}_{nn}} \right\rbrack^{- 1}\underset{\_}{H}{\underset{\_}{\gamma}}_{c}}} \\ {= {{\underset{\_}{R}}_{c}^{- 1}\underset{\_}{H}{\underset{\_}{\gamma}}_{c}}} \\ {= {{\underset{\_}{R}}_{c}^{- 1}{\underset{\_}{\Phi}}_{c}}} \end{matrix}{where}} & {{Eq}\quad(14)} \\ {{{\underset{\_}{\Gamma}}_{c} = {E\left\{ {{{\underset{\_}{\Theta}}_{c}(s)}{{\underset{\_}{\Theta}}_{c}^{H}(s)}} \right\}}},} & {{Eq}\quad(15)} \\ {{{\underset{\_}{\gamma}}_{c} = {E\left\{ {{{\underset{\_}{\Theta}}_{c}(s)}{{\underset{\_}{b}}_{c}^{H}(s)}} \right\}}},\quad{and}} & {{Eq}\quad(16)} \\ {{\underset{\_}{R}}_{c} = {{\underset{\_}{H}{\underset{\_}{\Gamma}}_{c}{\underset{\_}{H}}^{H}} + {{\underset{\_}{R}}_{nn}.}}} & {{Eq}\quad(17)} \end{matrix}$

Γ_(c) is a T×T covariance matrix of Θ_(c)(s). γ_(c) is a T×L correlation matrix of Θ_(c)(s) and b _(c)(s) and is indicative of the transmitted signal characteristic. R_(c) is an R×R correlation matrix for the wireless channel, signal, and noise statistics. Matrices Γ_(c), γ_(c), and R_(c) are dependent on channelization code c through transmit matrix B_(c) and gain g_(m,c).

Matrix Γ_(c) may be expressed as: Γ_(c)={tilde over (Γ)}+γ_(c)γ_(c) ^(H),   Eq (18) where {tilde over (Γ)} is a part of Γ_(c) that is not dependent on channelization code c. It can be shown that only M elements of γ_(c) are non-zero. The indices of the non-zero elements of γ_(c) are such that the R×L matrix Φ_(c) may be expressed as: Hγ_(c)=Φ_(c)={tilde over (H)}G_(c)B_(c),   Eq (19) where {tilde over (H)} is an R×M matrix containing M “on-time” columns of H, and

-   -   G_(c) is an M×M diagonal matrix containing √{square root over         (C)}·g_(m,c), for m=1, . . . , M, along the diagonal and zeros         elsewhere.

As shown in equation (5), H contains T=T₁+T₂+ . . . +T_(M) columns for the M transmit antennas. {tilde over (H)} contains M columns of H, or one column for each transmit antenna. The M columns of {tilde over (H)} multiply the M elements in y(k) that have their chip time aligned with the despreader operation in equation (10). These M columns may be identified as described below.

Matrix R_(c) in equation (17) may then be expressed as: $\begin{matrix} {\begin{matrix} {{\underset{\_}{R}}_{c} = {{\underset{\_}{H}{\underset{\_}{\Gamma}}_{c}{\underset{\_}{H}}^{H}} + {\underset{\_}{R}}_{nn}}} \\ {= {{\underset{\_}{H}\underset{\_}{\overset{\sim}{\Gamma}}{\underset{\_}{H}}^{H}} + {\underset{\_}{R}}_{nn} + {\underset{\_}{H}{\underset{\_}{\gamma}}_{c}{\underset{\_}{\gamma}}_{c}^{H}{\underset{\_}{H}}^{H}}}} \\ {= {\overset{\sim}{\underset{\_}{R}} + {{\underset{\_}{\Phi}}_{c}{\underset{\_}{\Phi}}_{c}^{H}}}} \end{matrix}{where}} & {{Eq}\quad(20)} \\ {\overset{\sim}{\underset{\_}{R}} = {{\underset{\_}{H}\overset{\sim}{\underset{\_}{\Gamma}}{\underset{\_}{H}}^{H}} + {{\underset{\_}{R}}_{nn}.}}} & {{Eq}\quad(21)} \end{matrix}$

Matrix W_(c) in equation (14) may then be expressed as: $\begin{matrix} {\begin{matrix} {{\underset{\_}{W}}_{c} = {{\underset{\_}{R}}_{c}^{- 1}\overset{\sim}{\underset{\_}{H}}{\underset{\_}{G}}_{c}{\underset{\_}{B}}_{c}}} \\ {= {\left\lbrack {\overset{\sim}{\underset{\_}{R}} + {{\underset{\_}{\Phi}}_{c}{\underset{\_}{\Phi}}_{c}^{H}}} \right\rbrack^{- 1}\overset{\sim}{\underset{\_}{H}}{\underset{\_}{G}}_{c}{\underset{\_}{B}}_{c}}} \\ {= {{\overset{\sim}{\underset{\_}{R}}}^{- 1}\overset{\sim}{\underset{\_}{H}}{\underset{\_}{G}}_{c}{{\underset{\_}{B}}_{c}\left( {\underset{\_}{I} + {{\underset{\_}{B}}_{c}^{H}{\underset{\_}{G}}_{c}{\overset{\sim}{\underset{\_}{H}}}^{H}{\overset{\sim}{\underset{\_}{R}}}^{- 1}\overset{\sim}{\underset{\_}{H}}{\underset{\_}{G}}_{c}{\underset{\_}{B}}_{c}}} \right)}^{- 1}}} \\ {= {\underset{\_}{F}{\underset{\_}{\Delta}}_{c}}} \end{matrix}{where}} & {{Eq}\quad(22)} \\ {{\underset{\_}{F} = {{\underset{\_}{\overset{\sim}{R}}}^{- 1}\underset{\_}{\overset{\sim}{H}}}},\quad{and}} & {{Eq}\quad(23)} \\ {{\underset{\_}{\Delta}}_{c} = {{\underset{\_}{G}}_{c}{{{\underset{\_}{B}}_{c}\left( {\underset{\_}{I} + {{\underset{\_}{B}}_{c}^{H}{\underset{\_}{G}}_{c}{\underset{\_}{\overset{\sim}{H}}}^{H}{\underset{\_}{\overset{\sim}{R}}}^{- 1}\underset{\_}{\overset{\sim}{H}}{\underset{\_}{G}}_{c}{\underset{\_}{B}}_{c}}} \right)}^{- 1}.}}} & {{Eq}\quad(24)} \end{matrix}$

In equation (23), F is a relatively large R×M matrix that is not dependent on channelization code. In equation (24), Δ_(c) is a small M×L matrix that contains all of the code dependent matrices in W_(c).

Equations (10) through (24) indicate that the processing at receiver 150 may be performed in two stages. The first stage filters the received samples x(k) with a front-end filter F that is not dependent on channelization code and further despreads and descrambles the filtered samples to obtain filtered symbols. A single front-end filter may be used for all channelization codes. The second stage combines the filtered symbols with a combiner matrix Δ_(c) for each channelization code c to obtain detected symbols for that channelization code. The front-end filter and combiner matrices may be updated separately at the same rate or different rates.

The multi-stage receiver processing may be performed in various manners. In the following description, pilot symbols are assumed to be sent with a transmit matrix of B_(c)=I and using the same channelization code p for each of the M transmit antennas. The pilot symbols are also assumed to be uncorrelated or orthogonal so that E {b_(p)(s)b_(p) ^(H)(s)}=I, where b_(p)(s) is an M×1 vector of pilot symbols sent from the M transmit antennas in symbol period s.

In one receiver design, front-end filter F is derived and used for the first stage (e.g., for block 160 in FIG. 1), and combiner matrix Δ_(c) is computed for each channelization code and used for the second stage (e.g., for block 170 in FIG. 1).

For symbol level training, a filter may be derived based on pilot symbols using least squares criterion, as follows: $\begin{matrix} {{{\underset{\_}{W}}_{p} = {\min\limits_{{\underset{\_}{W}}_{h}}{\sum\limits_{s = s_{0}}^{s_{0} + P - 1}{{{{\underset{\_}{W}}_{h}^{H}{{\underset{\_}{\chi}}_{p}(s)}} - {{\underset{\_}{b}}_{p}(s)}}}^{2}}}},} & {{Eq}\quad(25)} \end{matrix}$ where χ_(p)(s) is an R×1 vector of despread pilot symbols,

W_(h) is an R×M candidate filter matrix,

W_(p) is an R×M filter matrix derived based on pilot symbols, and

P is the number pilot symbols used to derive W_(p).

The despread pilot symbols in χ_(p)(s) may be obtained as shown in equation (13), albeit with pilot channelization code p instead of channelization code c. The least squares criterion selects a candidate filter matrix from among all candidate filter matrices such that the quantity on the right hand side is minimized. The selected filter matrix is provided as the least squares filter matrix W_(p).

In the limit, with P→∞ in equation (25), W_(p) may be expressed as: W _(p) =[E {χ _(p)(s)χ_(p) ^(H)(s)}]⁻¹ E {χ _(p)(s)b _(p) ^(H)(s)}.   Eq (26)

For symbol level training, W_(p) may be derived as follows. Despread pilot symbols in χ_(p)(s) may be obtained from the received samples as shown in equation (13). An R×R outer product χ_(p)(s)χ_(p) ^(H)(s) may be computed and averaged over a sufficient number of pilot symbols. An R×M outer product χ_(p)(s)b_(p) ^(H)(s) may also be computed and averaged. W_(p) may be computed based on the two averaged outer products. W_(p) may also be derived based on recursive least squares (RLS), block least squares, or some other techniques known in the art.

For chip level training, a filter may be derived based on received samples using the least squares criterion, as follows: $\begin{matrix} {{{\underset{\_}{W}}_{p} = {\min\limits_{{\underset{\_}{W}}_{h}}{\sum\limits_{k = {s_{0}C}}^{{{({s_{0} + P})}C} - 1}{{{{\underset{\_}{W}}_{h}^{H}{\underset{\_}{x}(k)}} - {{{\underset{\_}{b}}_{p}(s)} \cdot {v_{p}\left( {k\quad{mod}{\quad\quad}C} \right)} \cdot {p(k)}}}}^{2}}}},} & {{Eq}\quad(27)} \end{matrix}$ where b_(p)(s)·ν_(p)(k)·p(k) is an M×1 vector of pilot chips obtained by spreading and scrambling the pilot symbols.

In the limit, with P→∞ in equation (27), W_(p) may be expressed as: W _(p) =[E {x(k)x ^(H)(k)}]⁻¹ E {x(k)b _(p) ^(H)(s)·ν_(p)(k)·p(k)}  Eq (28)

For chip level training, W_(p) may be derived as follows. An R×R outer product x(k)x^(H)(k) may be computed based on the received samples and averaged over a sufficient number of pilot symbols. An R×M outer product x(k)b_(p) ^(H)(s)·ν_(p)(k)·p(k) may also be computed and averaged. W_(p) may then be computed based on the two averaged outer products.

From equation (22), W_(p) may be expressed as: $\begin{matrix} \begin{matrix} {{\underset{\_}{W}}_{p} = {{\underset{\_}{\overset{\sim}{R}}}^{- 1}\overset{\sim}{\underset{\_}{H}}\quad{{\underset{\_}{G}}_{p}\left( {\underset{\_}{I} + {{\underset{\_}{G}}_{p}{\underset{\_}{\overset{\sim}{H}}}^{H}{\overset{\sim}{\underset{\_}{R}}}^{- 1}\quad\underset{\_}{\overset{\sim}{H}}\quad{\underset{\_}{G}}_{p}}} \right)}^{- 1}}} \\ {= {\underset{\_}{F}\quad{{\underset{\_}{G}}_{p}\left( {\underset{\_}{I} + {\underset{\_}{P}}_{p}} \right)}^{- 1}}} \end{matrix} & {{Eq}\quad(29)} \\ {{{where}\quad{\underset{\_}{P}}_{p}} = {{\underset{\_}{G}}_{p}{\underset{\_}{\overset{\sim}{H}}}^{H}{\underset{\_}{\overset{\sim}{R}}}^{- 1}\underset{\_}{\overset{\sim}{H}}\quad{{\underset{\_}{G}}_{p}.}}} & {{Eq}\quad(30)} \end{matrix}$

The M×M matrix P_(p) may be estimated as follows: $\begin{matrix} {{\underset{\_}{P}}_{p} = {\frac{1}{P} \cdot {\sum\limits_{s = s_{0}}^{s_{0} + P - 1}{{\underset{\_}{F}}_{p}^{H}{{\underset{\_}{\chi}}_{p}(s)}{{{\underset{\_}{b}}_{p}^{H}(s)}.}}}}} & {{Eq}\quad(31)} \end{matrix}$ The estimate of P_(p) becomes more accurate in the limit, with P→∞. Similar to W_(p), P_(p) may also be estimated based on pilot chips instead of pilot symbols.

Front-end filter F may be derived based on equation (29), as follows: F=W _(p)(I+P _(p))G _(p) ⁻¹.   Eq (32)

Combiner matrix Δ_(c) may be derived based on equations (24) and (30), as follows: Δ_(c) =G _(c) B _(c)(I+B _(c) ^(H) G _(c) G _(p) ⁻¹ P _(p) G _(p) ⁻¹ G _(c) B _(c))⁻¹.   Eq (33)

Filter W_(c) may be expressed based on W_(p) and P_(p), as follows: $\begin{matrix} \begin{matrix} {{\underset{\_}{W}}_{c} = {\underset{\_}{F}\quad{\underset{\_}{G}}_{c}{{\underset{\_}{B}}_{c}\left( {\underset{\_}{I} + {{\underset{\_}{B}}_{c}^{H}{\underset{\_}{G}}_{c}{\underset{\_}{\overset{\sim}{H}}}^{H}{\underset{\_}{\overset{\sim}{R}}}^{- 1}\underset{\_}{\overset{\sim}{H}}\quad{\underset{\_}{G}}_{c}{\underset{\_}{B}}_{c}}} \right)}^{- 1}}} \\ {= {{{\underset{\_}{W}}_{p}\left( {\underset{\_}{I} + {\underset{\_}{P}}_{p}} \right)}{\underset{\_}{G}}_{p}^{- 1}{\underset{\_}{G}}_{c}{{{\underset{\_}{B}}_{c}\left( {\underset{\_}{I} + {{\underset{\_}{B}}_{c}^{H}{\underset{\_}{G}}_{c}{\underset{\_}{G}}_{p}^{- 1}{\underset{\_}{P}}_{p}{\underset{\_}{G}}_{p}^{- 1}{\underset{\_}{G}}_{c}{\underset{\_}{B}}_{c}}} \right)}^{- 1}.}}} \end{matrix} & {{Eq}\quad(34)} \end{matrix}$

As shown in equation (32), front-end filter F may be derived based on W_(p) and P_(p) , which may in turn be estimated based on pilot symbols or chips. As shown in equation (33), combiner matrix Δ_(c) for each channelization code c may be derived based on P_(p), gain matrices G_(p) and G_(c) for pilot and data, and transmit matrix B_(c) for channelization code c. G_(c)G_(p) ⁻¹ is also referred to as a traffic-to-pilot ratio and may be known (e.g., via signaling) or estimated by the receiver. It is normally sufficient to estimate the traffic-to-pilot ratio G_(c)G_(p) ⁻¹, and G_(p) and G_(c) do not need to be estimated separately.

Receiver 150 may recover the data symbols in b _(c)(s) as follows: $\begin{matrix} {{{\underset{\_}{\hat{b}}}_{c}(s)} = {{{\underset{\_}{\Delta}}_{c}^{H}\left( {\frac{1}{\sqrt{C}} \cdot {\sum\limits_{k = {sC}}^{{{({s + 1})}C} - 1}{{\underset{\_}{F}}^{H}{{\underset{\_}{x}(k)} \cdot \left\lbrack {{v_{c}\left( {k\quad{mod}{\quad\quad}C} \right)} \cdot {p(k)}} \right\rbrack^{*}}}}} \right)}.}} & {{Eq}\quad(35)} \end{matrix}$

Receiver 150 may perform the processing for equation (35) in two stages. In the first part of the first stage, receiver 150 may perform front-end filtering in each chip period k, as follows: v(k)=F ^(H) x(k),   Eq (36) where v(k) is an M×1 vector of filtered samples.

In the second part of the first stage, receiver 150 may despread and descramble the filtered samples for each channelization code c, as follows: $\begin{matrix} {{{{\underset{\_}{\hat{d}}}_{c}(s)} = {\frac{1}{\sqrt{C}} \cdot {\sum\limits_{k = {sC}}^{{{({s + 1})}C} - 1}{{\underset{\_}{v}(k)} \cdot \left\lbrack {{v_{c}\left( {k\quad{mod}\quad C} \right)} \cdot {p(k)}} \right\rbrack^{*}}}}},} & {{Eq}\quad(37)} \end{matrix}$ where {circumflex over (d)} _(c)(s) an M×1 vector of filtered symbols, which is an estimate of d _(c)(s).

In the second stage, receiver 150 may perform combining for each channelization code c, as follows: {circumflex over (b)} _(c)(s)=Δ_(c) ^(H) {circumflex over (d)} _(c)(s)   Eq (38)

Receiver 150 may also recover the data symbols in b _(c)(s) as follows: $\begin{matrix} {{{\underset{\_}{\hat{b}}}_{c}(s)} = {{\underset{\_}{\Delta}}_{c}^{H}{\underset{\_}{F}}^{H}{\frac{1}{\sqrt{C}} \cdot {\sum\limits_{k = {sC}}^{{{({s + 1})}C} - 1}{{\underset{\_}{x}(k)} \cdot {\left\lbrack {{v_{c}\left( {k\quad{mod}\quad C} \right)} \cdot {p(k)}} \right\rbrack^{*}.}}}}}} & {{Eq}\quad(39)} \end{matrix}$

Equation (39) may also be performed in two stages. In the first part of the first stage, receiver 150 may despread and descramble the received samples for each channelization code c to obtain despread symbols for that channelization code. In the second part of the first stage, receiver 150 may perform filtering on the despread symbols for each channelization code c with the same front-end filter F to obtain filtered symbols for that channelization code. In the second stage, receiver 150 may combine the filtered symbols for each channelization code c with the combiner matrix Δ_(c) for that channelization code.

W_(p) is obtained based on pilot symbols or chips and may not have converged to the optimal settings, e.g., because a finite number of pilot symbols (P) is used for training. In such instances, using F and Δ_(c) derived based on W_(p) may result in performance degradation.

In another receiver design, W_(p) is used as the front-end filter for the first stage. A combiner matrix D_(c) is computed for each channelization code c and used for the second stage.

The filtered symbols obtained with W_(p) may be expressed as: $\begin{matrix} \begin{matrix} {{\underset{\_}{z}}_{c} = {{\underset{\_}{W}}_{p}^{H}{{\underset{\_}{\chi}}_{c}(s)}}} \\ {= {{{\underset{\_}{W}}_{p}^{H}\underset{\_}{\overset{\sim}{H}}\quad{\underset{\_}{G}}_{c}{\underset{\_}{B}}_{c}{{\underset{\_}{b}}_{c}(s)}} + {{\underset{\_}{n}}_{c}(s)}}} \\ {= {{{\underset{\_}{A}}_{c}{{\underset{\_}{b}}_{c}(s)}} + {{\underset{\_}{n}}_{c}(s)}}} \end{matrix} & {{Eq}\quad(40)} \\ {{{{where}\quad{\underset{\_}{A}}_{c}} = {{\underset{\_}{W}}_{p}^{H}\underset{\_}{\overset{\sim}{H}}\quad{\underset{\_}{G}}_{c}{\underset{\_}{B}}_{c}}},{and}} & {{Eq}\quad(41)} \end{matrix}$

z_(c)(s) is an M×1 vector of filtered symbols for channelization code c.

The data symbols in b _(c)(s) may be obtained as: b _(c)(s)=D _(c) ^(II) z _(c)(s)   Eq (42) where D_(c) is an M×L combiner matrix for channelization code c.

Combiner matrix D_(c) may be derived based on minimum mean square error (MMSE) criterion, as follows: D _(c)=(A _(c) A _(c) ^(H) +R _(nn,c))⁻¹ A _(c).   Eq (43)

The noise covariance matrix R_(nn,c) may be estimated as follows: $\begin{matrix} \begin{matrix} {R_{{nn},c} = {\frac{1}{P} \cdot {\sum\limits_{s = {s_{0}C}}^{s_{0} + P - 1}{\left\lbrack {{{\underset{\_}{z}}_{p}(s)} - {{{\underset{\_}{A}}_{p}(s)}{{\underset{\_}{b}}_{p}(s)}}} \right\rbrack\left\lbrack {{{\underset{\_}{z}}_{p}(s)} - {{{\underset{\_}{A}}_{p}(s)}{{\underset{\_}{b}}_{p}(s)}}} \right\rbrack}^{H}}}} \\ {{= {{\frac{1}{P} \cdot {\sum\limits_{s = s_{0}}^{s_{0} + P - 1}{{{\underset{\_}{z}}_{p}(s)}{{\underset{\_}{z}}_{p}^{H}(s)}}}} - {{\underset{\_}{P}}_{p}{\underset{\_}{P}}_{p}^{H}}}},} \end{matrix} & {{Eq}\quad(44)} \end{matrix}$ where A_(p)=W_(p) ^(H){tilde over (H)}G_(p). The second equality in equation (44) results from the fact that an unbiased estimate of A_(p) is simply A_(p)=P_(p).

The M×L matrix A_(c) may be expressed as: A_(c)=A_(p)G_(p) ¹G_(c)B_(c).   Eq (45)

As shown in equation (45), matrix A_(c) may be computed for each channelization code c based on (a) matrix P_(p) estimated from pilot symbols or chips and applicable for all channelization codes and (b) traffic-to-pilot ratio G_(p) ⁻¹G_(c) and transmit matrix B_(c) that are specific for channelization code c. As shown in equation (43), combiner matrix D_(c) may be computed for each channelization code c based on (a) noise covariance matrix R_(nn,c) that is applicable for all channelization codes and (b) matrix A_(c) computed for channelization code c.

Combiner matrix D_(c) may also be estimated for each channelization code c as follows: $\begin{matrix} {{{\underset{\_}{R}}_{zz} = {E\left\{ {\frac{1}{C} \cdot {\sum\limits_{c = 1}^{C}{{{\underset{\_}{z}}_{c}(s)}{{\underset{\_}{z}}_{c}^{H}(s)}}}} \right\}}},{and}} & {{Eq}\quad(46)} \\ {{{\underset{\_}{D}}_{c} = {{\underset{\_}{R}}_{zz}^{- 1}{\underset{\_}{A}}_{c}}},} & {{Eq}\quad(47)} \end{matrix}$ where R_(zz) is an M×M covariance matrix for z_(c)(s).

In equation (46), an outer product z_(c)(s)z_(c) ^(H)(s) may be computed for each channelization code, then averaged over all channelization codes with the same transmit matrix B_(c), and further averaged over a sufficient number of symbol periods to obtain covariance matrix R_(zz). D_(c) may then be computed based on A_(c) and the inverse of R_(zz).

Receiver 150 may recover the data symbols in b _(c)(s) as follows: $\begin{matrix} {{{\hat{\underset{\_}{b}}}_{c}(s)} = {{{\underset{\_}{D}}_{c}^{H}\left( {\frac{1}{\sqrt{C}} \cdot {\sum\limits_{k = {sC}}^{{{({s + 1})}C} - 1}{{\underset{\_}{W}}_{p}^{H}{{\underset{\_}{x}(k)} \cdot \left\lbrack {{v_{c}\left( {k\quad{mod}\quad C} \right)} \cdot {p(k)}} \right\rbrack^{*}}}}} \right)}.}} & {{Eq}\quad(48)} \end{matrix}$

In equation (48), receiver 150 may filter the received samples with front-end filter W_(p), then despread and descramble the filtered samples for each channelization code c, and then combine the filtered symbols for each channelization code with combiner matrix D_(c).

Receiver 150 may also recover the data symbols in b _(c)(s) as follows: $\begin{matrix} {{{\hat{\underset{\_}{b}}}_{c}(s)} = {{\underset{\_}{D}}_{c}^{H}{\underset{\_}{W}}_{p}^{H}{\frac{1}{\sqrt{C}} \cdot {\sum\limits_{k = {sC}}^{{{({s + 1})}C} - 1}{{\underset{\_}{x}(k)} \cdot {\left\lbrack {{v_{c}\left( {k\quad{mod}\quad C} \right)} \cdot {p(k)}} \right\rbrack^{*}.}}}}}} & {{Eq}\quad(49)} \end{matrix}$

In equation (49), receiver 150 may despread and descramble the received samples for each channelization code c, then filter the despread symbols for each channelization code with front-end filter W_(p), and then combine the filtered symbols for each channelization code with combiner matrix D_(c).

The receiver processing may also be performed in multiple stages in other manners. A specific receiver design is described below.

FIG. 4 shows a block diagram of a design of various blocks within receiver 150 in FIG. 1. In this design, front-end filtering is performed prior to CDMA demodulation. Block 160 includes a front-end filter/equalizer 410 and a CDMA demodulator 420. Demodulator 420 includes C descramblers/despreaders 422 a through 422C for up to C channelization codes used for traffic data. Block 170 includes C combiners 432 a through 432C for up to C channelization codes used for traffic data.

Within channel processor 156, a timing estimator 442 determines the timing of the received signals. Unit 442 may estimate channel impulse responses and/or power delay profiles for different antennas and may determine the center of gravity of the channel impulse responses and/or power delay profiles. Unit 442 may then determine the timing of the received signals based on the center of gravity.

A coefficient computation unit 444 derives coefficients for filter W_(p) based on the received samples, e.g., as shown in equation (28). Unit 444 may also derive W_(p) based on RLS, block least squares, or some other technique. The timing information from unit 442 may be used for training, e.g., to align the locally generated pilot chips with the received samples. Unit 444 provides W_(p) to front-end filter 410.

Filter 410 performs front-end filtering/equalization on the received samples x(k) with W_(p) and provides filtered samples. Within demodulator 420, each unit 422 despreads and descrambles the filtered samples for a different channelization code and provides filtered symbols z_(c)(s) for that channelization code.

A unit 446 despreads and descrambles the filtered samples for pilot channelization code p. Units 422 and 446 perform despreading and descrambling based on the timing provided by unit 442. A channel estimator 448 estimates an M×M matrix W_(p) ^(H){tilde over (H)} based on the filtered pilot symbols from unit 446. A unit 450 computes the outer product z_(c)(s)z_(c) ^(H)(s) for each channelization code, averages the outer product across channelization codes and symbol periods, and provides correlation matrix R_(zz), e.g., as shown in equation (46). A unit 452 derives the coefficients for combiner matrix D_(c) for each channelization code c based on matrix W_(p) ^(H){tilde over (H)} from unit 448, the correlation matrix R_(zz) from unit 450, and code-specific matrices, as follows: D _(c) =R _(zz) ⁻¹ W _(p) ^(H) {tilde over (H)}G _(c) B _(c).   Eq (50)

Within RX MIMO processor 170, each combiner 452 combines the filtered symbols for a different channelization code c based on the combiner matrix D_(c) and provides detected symbols for that channelization code.

Receiver 150 may estimate the received signal quality, which may be quantified by a signal-to-interference-and-noise ratio (SINR), etc. The detected symbols from equation (42) may be expressed as: $\begin{matrix} \begin{matrix} {{{\hat{\underset{\_}{b}}}_{c}(s)} = {{{\underset{\_}{D}}_{c}^{H}{\underset{\_}{A}}_{c}{{\underset{\_}{b}}_{c}(s)}} + {{\underset{\_}{D}}_{c}^{H}{{\underset{\_}{n}}_{c}(s)}}}} \\ {= {{{\underset{\_}{L}}_{c}^{H}{{\underset{\_}{b}}_{c}(s)}} + {{\underset{\_}{w}}_{c}(s)}}} \end{matrix} & {{Eq}\quad(51)} \end{matrix}$ where L_(c) ^(H)=D_(c) ^(H)A_(c) and w_(c)(s)=D_(c) ^(H)n_(c)(s). The covariance of n_(c)(s) may be given as R_(nn,c)=E {n_(c)(s)n_(c) ^(H)(s)}. The covariance of w_(c)(s) may be given R _(ww,c)=D_(c) ^(H)R_(nn,c)D_(c).

The SINR of the l-th element of {circumflex over (b)} _(c)(s), b_(l,c)(s), may be expressed as: $\begin{matrix} {{{{SINR}\quad\left\{ {b_{\ell,c}(s)} \right\}} = \frac{{{L_{c}\left( {\ell,\ell} \right)}}^{2}}{{R_{{ww},c}\left( {\ell,\ell} \right)} + {\sum\limits_{{i = 1},{i \neq \ell}}^{L}{{L_{c}\left( {\ell,i} \right)}}^{2}}}},} & {{Eq}\quad(52)} \end{matrix}$ where L_(c)(l,l) is the (l,l)-th element of L _(c), and

R _(ww,c)(l,l) is the (l,l)-th element of R _(ww,c).

SINR {b_(l,c)(s)} is the SINR of the l-th data stream sent with channelization code c and may be used to select a data rate for that data stream. The SINR for each channelization code c is dependent on transmit matrix B_(c) used for that channelization code. Receiver 150 may determine the SINR for different possible transmit matrices and select the transmit matrix with the highest SINR. Receiver 150 may send feedback information to transmitter 110. This feedback information may comprise the transmit matrix selected for each channelization code, the SINR or data rate for each channelization code, an average SINR or data rate for all channelization codes, etc.

In general, front-end filtering may be performed in the first stage to process non on-time signal components in the M received signals. The front-end filter is, in general, not dependent on how the signals are processed at the transmitter prior to transmission. For a CDM transmission, the front-end filter may be applicable for all channelization codes. The second stage may combine the on-time signal components to recover the L transmitted signals. The combiner matrices used in the second stage may be dependent on how the signals are processed prior to transmission (e.g., the transmit matrix B_(c) and gain matrix G_(c) used by the transmitter) and other factors (e.g., the channel response {tilde over (H)} and signal statistics R_(zz)).

FIG. 5 shows a design of a process 500 for recovering a MIMO transmission at a receiver. A front-end filter for processing (e.g., compensating for, suppressing, or mitigating) non on-time signal components in multiple received signals is derived (block 512). The front-end filter does not isolate the non on-time signal components. Instead, the front-end filter processes the non on-time signal components in a desirable/beneficial manner and may also (incidentally) process on-time signal components. At least one combiner matrix for combining on-time signal components for multiple transmitted signals is also derived (block 514). The front-end filter may be F derived as shown in equation (32), and the combiner matrices may be Δ_(c) derived as shown in equation (33). The front-end filter may also be W_(p) derived as shown in equation (26) or (28), and the combiner matrices may be D_(c) derived, e.g., as shown in equation (43), (47) or (50). The front-end filter and combiner matrices may also be derived in other manners. The front-end filter may be derived based on received data for pilot and in accordance with, e.g., least squares criterion. The combiner matrices may be derived based on the transmit matrices used to send data, the gains used for data, a channel response estimate, the front-end filter, signal and/or noise statistics, etc. The combiner matrices may also be derived in accordance with MMSE or some other criterion.

Received data is filtered to process the non on-time signal components in the multiple received signals (block 516). Filtered data is processed to combine the on-time signal components for the multiple transmitted signals (block 518). Received data for more than one symbol period may be filtered to process the non on-time signal components. Filtered data for one symbol period may be processed to combine the on-time signal components. The received data and filtered data may be given in samples, symbols, etc.

For a CDM transmission sent with multiple channelization codes, a single front-end filter may be derived and used to process the non on-time signal components, and multiple combiner matrices may be derived and used to combine the on-time signal components for the multiple channelization codes. In one scheme, the received data is first filtered with the front-end filter to obtain intermediate data. The intermediate data is then despread for each channelization code to obtain filtered data for the channelization code. The filtered data for each channelization code is further processed with a combiner matrix for that channelization code to obtain output data for the channelization code. In another scheme, the received data is first despread for each channelization code to obtain despread data for the channelization code. The despread data for each channelization code is then filtered with the same front-end filter to obtain filtered data for the channelization code. The filtered data for each channelization code is further processed with a combiner matrix for the channelization code to obtain output data for the channelization code.

For CDM, the front-end filter may be derived based on the received data and known pilot, e.g., based on (a) samples for the received data and known pilot chips for chip level training or (b) despread pilot symbols obtained from the received data and known pilot symbols for symbol level training. The combiner matrices may be derived based on the transmit matrices used for the multiple channelization codes, the gains for the multiple channelization codes, a channel response estimate, the front-end filter, signal and/or noise statistics, etc., or a combination thereof. The front-end filter and channel response estimate may be estimated jointly, e.g., as W_(p) ^(H){tilde over (H)}.

The multi-stage receiver may also be used for other communication systems. For example, in a time division multiplexed (TDM) system, a front-end filter may be derived based on pilot received in a first time interval, and a combiner matrix for a second time interval may be derived based on a transmit matrix used in the second time interval. Data received in the second time interval may be filtered with the front-end filter, and the filtered data may be further processed with the combiner matrix.

In general, a filter may be derived based on pilot, which may be sent on a particular channelization code and/or time interval and using a particular transmit matrix and gain. The filter derived from the pilot may be used to derive a filter for data, which may be sent on other channelization codes and/or time intervals and possibly using different transmit matrices and gains.

For CDMA, the on-time and non on-time signal components may be distinguished by the time at which they are transmitted. The receiver may process a window of samples in order to recover a desired symbol transmitted by the transmitter. The timing of the equalizer determines the time instant at which the desired symbol is transmitted relative to the window. The samples obtained by the receiver contain different additive signal components including on-time and non on-time signal components. The on-time signal components are signal components for the desired symbol as well as other symbols transmitted at the same time as the desired symbol. All other signal components are non on-time signal components, which include signal components tracing back to symbols transmitted before and after the desired symbol.

A symbol may be transmitted by a transmit function, which may be dependent on one or more parameters. For example, the transmit function may be dependent on symbol period s, channelization code c, frequency slot or subcarrier index n, etc., and may be denoted as ƒ(s,c,n, . . . ). For simplicity, the transmit function may be dependent on three parameters s, c and n, or a tuple (s, c, n). The transmit functions for different symbols may be orthogonal so that <ƒ(s₁,c₁,n₁), ƒ(s₂,c₂,n₂)>≠0 only if s₁=s₂, c₁=c₂ and n₁=n₂, which may be expressed as (s₁,c₁,n₁)=(s₂,c₂,n₂).

A received signal may include (a) desired signal components from a desired transmit function ƒ(s₁,c₁,n₁) defined by tuple (s₁,c₁,n₁) and (b) other signal components from other transmit functions ƒ(s,c,n), with (s,c,n)≠(s₁,c₁,n₁). The front-end filtering in the first stage would process the other signal components. The combiner in the second stage would process the desired signal components.

For CDM, the transmit functions for symbol period s are determined by channelization codes of length C multiplied by scrambling sequence p(k). The transmit function for symbol period s and channelization code c may be denoted as ƒ(s,c). From the perspective of a symbol transmitted with transmit function ƒ(s₁,c₁), the received signal contains the following:

-   -   1. non on-time signal components corresponding to ƒ(s,c) for         s≠s₁,     -   2. on-time signal components corresponding to ƒ(s₁,c) and         composed of:         -   a. on-time signal components from the desired channelization             code and corresponding to ƒ(s₁,c₁), and         -   b. on-time signal components from other channelization codes             and corresponding to ƒ(s₁,c₂) for c₁≠c₂.

The front-end filter processes the non on-time signal components corresponding to ƒ(s,c). The descrambling and despreading by the front-end filter also cancels the on-time signal components from other channelization codes and corresponding to ƒ(s₁,c₂). The combiner processes the on-time signal components from the desired channelization code and corresponding to ƒ(s₁,c₁).

In a single carrier system that does not utilize CDM, the transmit functions may be simply digital deltas in time and may be given as ƒ(s)=δ(t−s). As time t advances, the position of the delta changes in time.

In an OFDM-based system, the transmit functions may be for different subcarriers and may be given as ƒ(s,n), where n is a subcarrier index. The subcarriers in OFDM may correspond to the channelization codes in CDM. A transmitter may send N data/pilot symbols on N subcarriers in an OFDM symbol period from a given transmit antenna by (a) converting the N data/pilot symbols to the time-domain with an inverse fast Fourier transform (IFFT) to obtain N time-domain samples and (b) appending a cyclic prefix to the time-domain samples to obtain an OFDM symbol. A receiver may obtain received data/pilot symbols for a given receive antenna by (a) removing the cyclic prefix in the received samples and (b) converting N received samples to the frequency-domain with a fast Fourier transform (FFT) to obtain N received symbols for the N subcarriers. The received symbols may correspond to z_(c)(s) in equation (40), where subscript c is replaced with subcarrier index n. For OFDM, the on-time signal components may be signal components sent on a particular subcarrier from different transmit antennas. The non on-time signal components may be signal components sent on other subcarriers. The front-end filter may be implemented by the FFT and cyclic prefix removal at the receiver. A combiner matrix D_(c) may be computed for each subcarrier and used to combine received symbols from all received antennas for that subcarrier.

Those of skill in the art would understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.

Those of skill would further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the disclosure herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.

The various illustrative logical blocks, modules, and circuits described in connection with the disclosure herein may be implemented or performed with a general-purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.

The steps of a method or algorithm described in connection with the disclosure herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.

The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the spirit or scope of the disclosure. Thus, the disclosure is not intended to be limited to the examples described herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein. 

1. An apparatus comprising: at least one processor to filter received data to process non on-time signal components in multiple received signals and to obtain filtered data, and to process the filtered data to combine on-time signal components for multiple transmitted signals; and a memory coupled to the at least one processor.
 2. The apparatus of claim 1, wherein the at least one processor filters the received data for more than one symbol period to process the non on-time signal components, and processes the filtered data for one symbol period to combine the on-time signal components.
 3. The apparatus of claim 1, wherein the at least one processor filters the received data in time domain.
 4. The apparatus of claim 1, wherein the at least one processor derives a front-end filter for processing the non on-time signal components and derives at least one combiner matrix for combining the on-time signal components.
 5. The apparatus of claim 4, wherein the at least one processor derives the front-end filter based on received data for pilot and derives the at least one combiner matrix based on at least one transmit matrix used to send data in the multiple transmitted signals.
 6. The apparatus of claim 1, wherein the at least one processor derives a front-end filter for processing the non on-time signal components and derives multiple combiner matrices for combining the on-time signal components for multiple channelization codes used for the multiple transmitted signals.
 7. The apparatus of claim 6, wherein the at least one processor filters the received data with the front-end filter and processes the filtered data with the multiple combiner matrices to obtain output data for the multiple channelization codes.
 8. The apparatus of claim 6, wherein the at least one processor filters the received data with the front-end filter to obtain intermediate data, despreads the intermediate data for each of the multiple channelization codes to obtain filtered data for the channelization code, and processes the filtered data for each channelization code with a combiner matrix for the channelization code to obtain output data for the channelization code.
 9. The apparatus of claim 6, wherein the at least one processor despreads the received data for each of the multiple channelization codes to obtain despread data for the channelization code, processes the despread data for each channelization code with the front-end filter to obtain filtered data for the channelization code, and processes the filtered data for each channelization code with a combiner matrix for the channelization code to obtain output data for the channelization code.
 10. The apparatus of claim 6, wherein the at least one processor derives the front-end filter based on the received data and known pilot.
 11. The apparatus of claim 6, wherein the at least one processor derives the front-end filter based on samples for the received data and known pilot chips.
 12. The apparatus of claim 6, wherein the at least one processor despreads the received data with a pilot channelization code to obtain despread pilot symbols, and derives the front-end filter based on the despread pilot symbols and known pilot symbols.
 13. The apparatus of claim 6, wherein the at least one processor derives the front-end filter based on least squares criterion.
 14. The apparatus of claim 6, wherein the at least one processor derives the multiple combiner matrices based on multiple transmit matrices used for the multiple channelization codes.
 15. The apparatus of claim 14, wherein the at least one processor derives the multiple combiner matrices further based on gains for the multiple channelization codes.
 16. The apparatus of claim 14, wherein the at least one processor derives the multiple combiner matrices further based on a channel response estimate and the front-end filter.
 17. The apparatus of claim 14, wherein the at least one processor derives the multiple combiner matrices based on minimum mean square error (MMSE) criterion.
 18. The apparatus of claim 6, wherein the at least one processor derives a combiner matrix for each channelization code based on a noise covariance matrix, the front-end filter, a channel response estimate, and a transmit matrix for the channelization code.
 19. The apparatus of claim 6, wherein the at least one processor derives a correlation matrix based on the filtered data and derives a combiner matrix for each channelization code based on the correlation matrix, the front-end filter, a channel estimate, and a transmit matrix for the channelization code.
 20. The apparatus of claim 6, wherein the at least one processor updates the front-end filter at a first update rate and updates the multiple combiner matrices at a second update rate different from the first update rate.
 21. The apparatus of claim 1, wherein the at least one processor derives a front-end filter based on pilot received in a first time interval, derives a combiner matrix for a second time interval based on a transmit matrix used in the second time interval, filters received data for the second time interval with the front-end filter to obtain filtered data for the second time interval, and processes the filtered data with the combiner matrix.
 22. The apparatus of claim 1, wherein the at least one processor estimates received signal quality for at least one data signal sent in the multiple transmitted signals.
 23. An apparatus comprising: at least one processor to derive a front-end filter for processing non on-time signal components in multiple received signals, to derive multiple combiner matrices for combining on-time signal components for multiple transmitted signals sent with multiple channelization codes, to filter received samples with the front-end filter and obtain filtered symbols for the multiple channelization codes, and to process filtered symbols for each of the multiple channelization codes with a combiner matrix for the channelization code to obtain output symbols for the channelization code; and a memory coupled to the at least one processor.
 24. The apparatus of claim 23, wherein the at least one processor derives the front-end filter based on the received samples and known pilot chips.
 25. The apparatus of claim 23, wherein the at least one processor derives a combiner matrix for each channelization code based on a transmit matrix used for the channelization code.
 26. A method comprising: filtering received data to process non on-time signal components in multiple received signals and obtain filtered data; and processing the filtered data to combine on-time signal components for multiple transmitted signals.
 27. The method of claim 26, further comprising: deriving a front-end filter for processing the non on-time signal components; and deriving at least one combiner matrix for combining the on-time signal components.
 28. The method of claim 26, further comprising: deriving a front-end filter for processing the non on-time signal components; and deriving multiple combiner matrices for combining the on-time signal components for multiple channelization codes used for the multiple transmitted signals.
 29. The method of claim 28, wherein the filtering the received data comprises filtering the received data with the front-end filter to obtain intermediate data, and despreading the intermediate data for each of the multiple channelization codes to obtain filtered data for the channelization code, and wherein the processing the filtered data comprises processing the filtered data for each channelization code with a combiner matrix for the channelization code to obtain output data for the channelization code.
 30. The method of claim 28, wherein the deriving the front-end filter comprises deriving the front-end filter based on samples for the received data and known pilot chips.
 31. The method of claim 28, wherein the deriving the multiple combiner matrices comprises deriving a combiner matrix for each of the multiple channelization codes based on a transmit matrix used for the channelization code.
 32. An apparatus comprising: means for filtering received data to process non on-time signal components in multiple received signals and obtain filtered data; and means for processing the filtered data to combine on-time signal components for multiple transmitted signals.
 33. The apparatus of claim 32, further comprising: means for deriving a front-end filter for processing the non on-time signal components; and means for deriving multiple combiner matrices for combining the on-time signal components for multiple channelization codes used for the multiple transmitted signals.
 34. The apparatus of claim 33, wherein the means for filtering the received data comprises means for filtering the received data with the front-end filter to obtain intermediate data, and means for despreading the intermediate data for each of the multiple channelization codes to obtain filtered data for the channelization code, and wherein the means for processing the filtered data comprises means for processing the filtered data for each channelization code with a combiner matrix for the channelization code to obtain output data for the channelization code.
 35. The apparatus of claim 33, wherein the means for deriving the front-end filter comprises means for deriving the front-end filter based on samples for the received data and known pilot chips, and wherein the means for deriving the multiple combiner matrices comprises means for deriving a combiner matrix for each of the multiple channelization codes based on a transmit matrix used for the channelization code.
 36. A processor readable media for storing instructions operable to: filter received data to process non on-time signal components in multiple received signals and obtain filtered data; and process the filtered data to combine on-time signal components for multiple transmitted signals.
 37. An apparatus comprising: at least one processor to perform processing for non on-time signal components in multiple received signals to obtain received symbols, to derive a combiner matrix for combining on-time signal components for multiple transmitted signals sent on a subcarrier, and to process received symbols for the subcarrier with the combiner matrix to obtain output symbols for the subcarrier; and a memory coupled to the at least one processor.
 38. The apparatus of claim 37, wherein the at least one processor performs processing for the non on-time signal components by removing cyclic prefix and performing a fast Fourier transform (FFT) on received samples to obtain the received symbols.
 39. The apparatus of claim 37, wherein the at least one processor derives the combiner matrix based on at least one of a noise covariance matrix, a channel response estimate, and a transmit matrix for the subcarrier.
 40. The apparatus of claim 37, wherein the at least one processor derives a second combiner matrix for combining on-time signal components for multiple transmitted signals sent on a second subcarrier, and processes received symbols for the second subcarrier with the second combiner matrix to obtain output symbols for the second subcarrier. 